package countDownLatch;

import java.util.concurrent.CountDownLatch;

// CountDownLatch解决大文件切分
public class CountDownLatchTest {
    public static void main(String[] args) {
        // CountDownLatch 主要有2个方法
        // 1、await,主线程来调用这个方法
        // 2、countDown,表示最后一个任务也执行完了
        // 举一个例子：四个选手比赛跑，初始情况下，调用await就会阻塞，每个选手通过终点都会调用countDown方法
        //      前三次调用countDown，对await无影响，第四次调用时，会将阻塞的await唤醒，返回。此时比赛结束。
        CountDownLatch countDownLatch = new CountDownLatch(4);

        // CountDownLatch的使用场景：多线程下载大的文件
        // 把大的文件切分成多个小文件，安排多个线程去下载小文件，当最后一个小文件下载完成之和，再合起来。
    }
}
